/**
 * 基础命令函数
 */
const vscode = require("vscode");

const { getChannel } = require('../outputChannel');
const dayjs = require('dayjs')

/**
 * @ 扩展测试命令
 */
function test(args) {
  // args 参数 由 触发方式决定有没有，以及什么值
  console.log("[args]=====>", args);

  vscode.window.showInformationMessage("测试命令!");
}

/**
 * @ 通道输出需要的内容
 */
function output() {
  const outputChannel = getChannel();

  outputChannel.appendLine(`输出: ${ dayjs().format('YYYY-MM-DD HH:mm:ss')}`);
  outputChannel.show(); // 显示输出面板（可选）
}

/**
 * @ 复制目录名/文件名
 */
function copyName(args) {
  if (!args) {
    vscode.window.showErrorMessage("请选中一个文件或目录");
    return;
  }

  // 提取名称（文件/目录通用逻辑）
  const fullPath = args.fsPath;
  // 处理不同系统的路径分隔符（Windows用\，其他用/）
  const separator = fullPath.includes("\\") ? "\\" : "/";
  const resourceName = fullPath.split(separator).pop();

  // 复制到剪贴板并提示
  vscode.env.clipboard.writeText(resourceName).then(() => {
    vscode.window.showInformationMessage(`已复制名称：${resourceName}`);
  });
}

/**
 * 打开快速选择
 */
async function openQuickPick() {
  // 1. 定义可选项目
    const options = [
    { label: 'Emmet: 包围', description: '标签包裹', command: 'editor.emmet.action.wrapWithAbbreviation' },
    { label: 'JS 语法包裹', description: 'JS 语法包裹', command: 'editor.action.surroundWithSnippet' },
  ];

  // 2. 显示快速选择面板
  const selected = await vscode.window.showQuickPick(options, {
    placeHolder: '请选择一个选项', // 占位提示文字
    ignoreFocusOut: true, // 失去焦点时不关闭面板
    matchOnDescription: true, // 支持按描述匹配（自定义项时生效）
    matchOnDetail: true, // 支持按详情匹配（自定义项时生效）
    canPickMany: false // 是否允许多选（默认 false）
  });

  // 3. 处理用户选择结果
  if (selected) {
    vscode.window.showInformationMessage(`你选择了：${selected.label}`);
    vscode.commands.executeCommand(selected.command);
  } else {
    vscode.window.showWarningMessage('你取消了选择');
  }
}
module.exports = { test, output, copyName, openQuickPick };
